<?php
class Safe {	
	/**
	 * 安全转换    表单->数据
	 */
	public function convertForm($form){
		$tmp = array();
		
		//遍历数组
		foreach($form as $k=>$v){
			//多维数组,则自调用
			if(is_array($v)){
				$tmp[$k] = array();
				$tmp[$k] = $this->convertForm($v);
				
			//魔术引号未开启
			}elseif(!get_magic_quotes_gpc()){
				//过滤数据
				$tmp[$k] = addslashes(htmlspecialchars($v,ENT_NOQUOTES,'UTF-8'));
				
			//魔术引号开启
			}else{
				$tmp[$k] = htmlspecialchars($v,ENT_NOQUOTES,'UTF-8');
			}
		}
		return $tmp;
	}//end of function convertForm()
	
	/**
	 * 安全转换    数据->表单
	 */
	public function convertData($data){
		$tmp = array();
		foreach($data as $k=>$v){
			if(is_array($v)){
				$tmp[$k] = array();
				$tmp[$k] = $this->convertData($v);
			}else{
				$tmp[$k] = htmlspecialchars_decode($v,ENT_NOQUOTES);
			}
		}
		return $tmp;
	}
	
	/**
	 * XSS过滤    表单->数据
	 */
	public function stripForm($form){
		$tmp = array();
		foreach($form as $k=>$v){
			if(is_array($v)){
				$tmp[$k] = array();
				$tmp[$k] = $this->stripForm($v);
			}elseif(!get_magic_quotes_gpc()){
				$tmp[$k] = addslashes(strip_tags($v));
			}else{
				$tmp[$k] = strip_tags($v);
			}
		}
		return $tmp;
	}
	
}
class checkForm{
	
	public function is_email($email){
		if(!preg_match("/^[A-Za-z0-9\._\-+]+@[A-Za-z0-9_\-+]+(\.[A-Za-z0-9_\-+]+)+$/",$email))
		return false;
		return true;
	}

	/**
	 * 检查数字(区分正负)
	 */
	public function is_number($number){
		if(!preg_match("/^\-?\+?[0-9e1-9]+$/",$number))
		return false;
		return true;
	}

	/**
	 * 检查数字 (不区分正负)
	 */
	public function is_unsign_number($number){
		if(!preg_match("/^\+?[0-9]+$/",$number))
			return false;
		return true;
	}

	/**
	 * 字母数字 (不区分正负)
	 */
	public function is_alpha_numeric($str){
		if(!preg_match("/^[A-Za-z0-9 ]+$/",$str))
		return false;
		return true;
	}

	/**
	 * 检查日期 (返回正负)
	 */
	public function is_date($d){
		if(!preg_match("/^(\d){1,2}[-\/](\d){1,2}[-\/]\d{4}$/",$d,$matches))
		return -1;//Bad Date Format
		$T = split("[-/\\]",$d);
		$MON=array(0,31,28,31,30,31,30,31,31,30,31,30,31);
		$M = $T[0];
		$D = $T[1];
		$Y = $T[2];
		return $D>0 && ($D<=$MON[$M] ||    $D==29 && $Y%4==0 && ($Y%100!=0 || $Y%400==0));
	}
}
?>